﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Unimaq.Macroprocesos.LogicaNegocio;

namespace MacroprocesosWinForms.Administrador.ControlUsuario
{
    public partial class Persona : UserControl
    {
        private Unimaq.Macroprocesos.AccesoDatos.Persona selPersona;

        public Persona()
        {
            InitializeComponent();
        }

        public Persona(Unimaq.Macroprocesos.AccesoDatos.Persona selPersona) : this()
        {
            // TODO: Complete member initialization
            this.selPersona = selPersona;
            btnGuardar.Tag = "M";
        }

        private void Persona_Load(object sender, EventArgs e)
        {
            if (btnGuardar.Tag != null)
            {
                if (btnGuardar.Tag.ToString().Equals("M"))
                {
                    RellenarFormulario();
                }
            }
        }

        private void RellenarFormulario()
        {
            if (selPersona != null)
            {
                txtCodigo.Text = selPersona.CodigoRRHH.Trim();
                txtNombres.Text = selPersona.Nombres.Trim();
                txtApellidos.Text = selPersona.Apellidos.Trim();
                txtCorreo.Text = selPersona.Correo.Trim();
                txtTelefono.Text = selPersona.Telefono.Trim();
                chkAdministrador.Checked = selPersona.esAdministrador.HasValue ? selPersona.esAdministrador.Value.Equals(1) ? true : false : false;
                chkUsuario.Checked = selPersona.esUsuario.HasValue ? selPersona.esUsuario.Value.Equals(1) ? true : false : false;
                txtUsuario.Text = selPersona.UsuarioSistema.Trim();
                txtPassword.Text = selPersona.PasswordSistema.Trim();
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            bool correcto = false;

            if (!string.IsNullOrWhiteSpace(txtNombres.Text))
            {
                if (!string.IsNullOrWhiteSpace(txtApellidos.Text))
                {
                    if (string.IsNullOrWhiteSpace(txtUsuario.Text.Trim()) &&
                        string.IsNullOrWhiteSpace(txtPassword.Text.Trim()))
                    {
                        correcto = true;
                    }
                    else
                    {
                        if (!string.IsNullOrWhiteSpace(txtUsuario.Text.Trim()) &&
                           !string.IsNullOrWhiteSpace(txtPassword.Text.Trim()))
                        {
                            correcto = true;
                        }
                        else
                        {
                            if ((!string.IsNullOrWhiteSpace(txtUsuario.Text.Trim()) && string.IsNullOrWhiteSpace(txtPassword.Text.Trim())) ||
                                (string.IsNullOrWhiteSpace(txtUsuario.Text.Trim()) && !string.IsNullOrWhiteSpace(txtPassword.Text.Trim())))
                            {
                                MessageBox.Show("Uno o más campos de acceso al sistema se encuentran vacíos", "Macroprocesos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Ingrese apellidos", "Macroprocesos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("Ingrese nombres", "Macroprocesos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }

            if (correcto)
            {
                PersonaBLL personaBLL;
                int resultado = 0;

                Unimaq.Macroprocesos.AccesoDatos.Persona nuevaPersona =
                    new Unimaq.Macroprocesos.AccesoDatos.Persona()
                    {
                        CodigoRRHH = txtCodigo.Text.Trim(),
                        Nombres = txtNombres.Text.Trim(),
                        Apellidos = txtApellidos.Text.Trim(),
                        NombreCompleto = string.Format("{0} {1}", txtNombres.Text.Trim(), txtApellidos.Text.Trim()),
                        Correo = txtCorreo.Text.Trim(),
                        Telefono = txtTelefono.Text.Trim(),
                        esAdministrador = chkAdministrador.Checked ? 1 : 0,
                        esUsuario = chkUsuario.Checked ? 1 : 0,
                        UsuarioSistema = txtUsuario.Text.Trim(),
                        PasswordSistema = txtPassword.Text.Trim(),
                        FechaRegistro = DateTime.Now
                    };

                if (btnGuardar.Tag == null)
                {
                    personaBLL = new PersonaBLL();
                    resultado = personaBLL.Registrar(nuevaPersona);
                }

                if (resultado > 0)
                {
                    if (btnGuardar.Tag == null)
                    {
                        MessageBox.Show("Persona registrada", "Macroprocesos - Unimaq", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); 
                    }

                    LimpiarFormulario();                    
                }
            }
        }

        private void ActualizarArbol()
        {
            PrincipalAdministrador iuPrincipalAdministrador = this.ParentForm as PrincipalAdministrador;
            iuPrincipalAdministrador.CargarArbolProcesos();
        }

        private void LimpiarFormulario()
        {
            txtCodigo.ResetText();
            txtNombres.ResetText();
            txtApellidos.ResetText();
            txtCorreo.ResetText();
            txtTelefono.ResetText();
            txtUsuario.ResetText();
            txtPassword.ResetText();
            chkAdministrador.Checked = false;
            chkUsuario.Checked = false;
        }
    }
}
